/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Narrativa;

import Personagem.Mensageiro;
import Personagem.Personagem;
import java.util.Scanner;

/**
 *
 * @author Daniele Martins
 */
public class Interface {

    private int comando;//String que recebe
    private Scanner teclado;
    private boolean erro;

    public Interface() {
        teclado = new Scanner(System.in);

    }

    public void escolhaCaminho() {
        System.out.println("Mensageiro deve escolher por qual caminho seguir.");
        System.out.println("[1] Norte  [2] Sul  [3] Leste  [4] Oeste  ");
        analizaEntrada(4);
    }

    public void menu(Mensageiro m) {

        System.out.println("\nO que deseja fazer ?");
        System.out.println("[1] Comer  [2] Dormir  [3] Beber  [4] Adicionar Recurso"
                + "  [5] Ver Inventario  [6] Ver Vida [7] Andar  [8] Ver localização \n");
        analizaEntrada(8);

    }

    public void verMapa(Mensageiro mensageiro) {
        System.out.println("***********************************");
        System.out.println(" Mensageiro está no : " + mensageiro.getPosicaoAtual().getNome());
        System.out.println("***********************************");
    }

    public void addRecurso() {
        System.out.println("Mensageiro tem a opção de add recurso do tipo equipamento, suprimento e arma."
                + " [1] Sim   [2] Não  \n");
        analizaEntrada(2);
    }

    public void maisRecurso() {
        System.out.println("Deseja adicionar mais algum recurso ?"
                + "\n [1] Sim   [2] Não\n ");
        analizaEntrada(2);
    }

    public void historiaInicial() {
        System.out.println("A presente história se passa na época da Revolução"
                + "Farroupilha, onde a então província de São Pedro"
                + "do Rio Grande do Sul declarou \n"
                + "independência, dando origem à República"
                + "Rio-Grandense."
                + "A Guerra dos Farrapos"
                + "estendeu-se de 20 de setembro de 1835 a 1 de");
        System.out.println("março de 1845. Neste contexto, a cidade do Alegrete"
                + " foi estratégica  para a revolução, chegando a ser a terceira  capital");
        System.out.println("farroupilha. Nesta  época o perímetro da cidade "
                + "era muito  bem guardado, pois  abrigava General Bento Gonçalves, líder da");
        System.out.println("revolução e presidente da república.\n");

    }

    public void inicio() {
        System.out.println("O mensageiro inicia sua jornada em busca da cidadde, afim de entregar a carta para o presidente. \n");
    }

    public void encherCantil() {
        System.out.println("Deseja encher o cantil extra antes de continuar ?");
        System.out.println("[1] Sim                [2] Não ");
        analizaEntrada(2);
        if (comando == 1) {
            System.out.println("Cantil extra cheios !!\n");

        } else {
        }
    }

    public void deserto() {
        System.out.println("++Deserto++");
        System.out.println("Depois de algumas horas o mensageiro chega no deseto."
                + "Seguindo em  frente o mensageiro encontra um posto onde \n"
                + "verifica sua disponibiliade de água, se for pouca deverá encher seu cantils mas para isso terá que fazer um pequeno \n"
                + "esforço para alcançar a água do poço. \n");

    }

    public void charcoSul() {
        System.out.println("++Charco Sul++");
        System.out.println("O Mensageiro parte em direção ao Charco Sul.\n ");
    }

    public void charcoNorte() {
        System.out.println("++Charco Norte++");
        System.out.println("O Mensageiro parte em direção ao Charco Norte.\n ");
    }

    public void cidade() {
        System.out.println("++Cidade++");
        System.out.println("Mensageiro chegou na cidade e está quase completanto sua missão,"
                + "\nmas para isso deverá infrentar seu inimigo e vencer.");
    }

    public void estrada() {
        System.out.println("++Estrada++");
        System.out.println("O Mensageiro parte em direção a Estrada.\n ");
    }

    public void ponte() {
        System.out.println("++Ponte++");
        System.out.println("O Mensageiro parte em direção a Ponte. ");
        System.out.println(" ... historia ..");

    }

    public void arroio() {
        System.out.println("++Arroio++");
        System.out.println("O Mensageiro parte em direção ao Arroio.\n ");
    }

    public void usarHabilidade() {
        System.out.println("Deseja usar sua habilidade de prever o tempo ?");
        System.out.println("[1] Sim    [2] Não");
        analizaEntrada(2);
    }

    public void amigoNoLocal() {
        System.out.println("Durante a viagem o Mensageiro encontra um amigo que possui uma dica importante."
                + "\n Deseja ouvir o que ele tem a dizer ?");
        System.out.println("[1] Sim   [2] Não  ");
        analizaEntrada(2);
    }

    public void lutarContraInimigo() {
        System.out.println("\nDurante a viagem o Mensageiro se depara com o inimigo que o desafia para uma batalha.");
        System.out.println("Deseja enfrenta-lo ? \n");
        System.out.println("[1] Sim    [2] Não");
        analizaEntrada(2);

    }

    public void desistiuLutarContraInimigo(Mensageiro mensageiro) {
        System.out.println("Mensageiro foi covarde e não aceitou lutar com o inimigo.");
        mensageiro.perderVida(10);

    }

    public void entregarCarta() {
        System.out.println("\nMensageiro superou todos desafios possiveis e conseguiu alcançar seu objetivo."
                + "Deseja entregar a carta ?");
        System.out.println("[1] Sim  [2] Não");
        analizaEntrada(2);
       
        
    }

    public void escolhaCharco() {
        System.out.println("Durante a viagem você se depara com uma encruzilhada, "
                + "você pode escolher seguir em frente ou escolher o caminho norte ou sul ");

        System.out.println("Por qual caminho deseja seguir?");
        System.out.println("1 - Norte             2 - Sul      3 - Seguir  ");
        analizaEntrada(3);
    }

    public void mostraBeber(boolean flag, Mensageiro mensageiro) {
        if (flag == true) {
            mensageiro.beber();
            System.out.println("--------------------------O Mensageiro bebeu água do seu"
                    + " cantil.-------------------------\n");

        } else {
            System.out.println("--------------------------O cantil está vazio"
                    + "-------------------------\n");
        }
    }

    public void comeu(Mensageiro m) {
        System.out.println("O que você quer comer?");
        System.out.println("1 - Carne             2 - Laranja             3 - Maçã\n");
        analizaEntrada(3);
        if (getComando() == 1) {
            m.comer();
            System.out.println("O mensageiro comeu uma carne.\n");
        } else if (getComando() == 2) {
            m.comer();
            System.out.println("O mensageiro comeu uma laranja.\n");
        } else {
            m.comer();
            System.out.println("O mensageiro comeu uma maçã.\n");
        }
    }

    public void dormiu(Mensageiro m) {
        m.dormir();
        System.out.println("O Mensageiro  dormiu durante algumas horas e recuperou suas forças.\n ");
    }

    public void FimJogo() {
        System.out.println(" O Mensageiro não tem forças para continuar.");
        System.out.println("-------------------------- Fim do Jogo -------------------------");
        System.exit(0);
    }

    public void mostraVida(Personagem m) {
        System.out.println("--------------- Sua força atual é " + m.getVida() + "."
                + "---------------\n");
    }

    public boolean analizaNumero(int comando, int max) {
        if ((comando > max) || (comando == 0)) {
            System.out.println("Erro: Digite somente um número de 1 até " + max + "\n");
            return true;
        } else {
            return false;
        }
    }

    public boolean analizaComando(String string) {
        boolean flag = false;
        char[] vetor = new char[string.length()];
        for (int i = 0; i < string.length(); i++) {
            vetor[i] = string.charAt(i);
        }
        for (int i = 0; i < string.length(); i++) {
            if ((vetor[i] < '0') || (vetor[i] > '9')) {
                flag = true;
                break;
            }
        }
        if (flag) {
            System.out.println("Erro: Digite somente números");
            return true;
        } else {
            setComando(Integer.parseInt(string));
            return false;
        }
    }

    public void analizaEntrada(int max) {
        while (erro = true) {
            int cont = 0;
            if (analizaComando(getTeclado().nextLine()) == false) {
                cont++;
            }
            if (analizaNumero(getComando(), max) == false) {
                cont++;
            }
            if (cont == 2) {
                break;
            }
        }
    }

    public int getComando() {
        return comando;
    }

    public void setComando(int comando) {
        this.comando = comando;
    }

    public Scanner getTeclado() {
        return teclado;
    }

    public void setTeclado(Scanner teclado) {
        this.teclado = teclado;
    }
}
